
package modelos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;


public class MOrden extends MDB {

    private String cliente, cedula;
    private Date fecha;
    private float total;

    public MOrden() {
        super();
    }

    public boolean registar(){
        boolean sw = false;
        abrir();
        String patron = "yyyy-MM-dd";
        SimpleDateFormat formato = new SimpleDateFormat(patron);
        String sql="INSERT INTO Orden (codigo, cliente, cedula, total, fecha ,estatus ) VALUES(?,?,?,?,'"+formato.format(getFecha())+"',?)";
        PreparedStatement stam = crearPreparedStatement(sql);
        try {
            stam.setInt(1, getCodigo());
            stam.setString(2, getCedula());
            stam.setString(3, getNombre());
            stam.setFloat(4, getTotal());
            stam.setString(5, getEstatus());
            stam.executeUpdate();
            sw = true;
        } catch (SQLException ex) {
            Logger.getLogger(MProducto.class.getName()).log(Level.SEVERE, null, ex);
        }        
        cerrar();
        return sw;
    }

    public boolean eliminar(){
     return eliminar("Orden");
    }

    public void eliminarProductos(Vector<Integer> codigos){
        abrir();
        for (int i = 0; i < codigos.size(); i++){
            String sql="UPDATE prodorde SET estatus = 'A' WHERE cod_producto=? AND cod_orden=?";
            PreparedStatement stam = crearPreparedStatement(sql);
            try {
                stam.setInt(1, codigos.elementAt(i));
                stam.setInt(2,getCodigo());
                stam.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(MProducto.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        cerrar();
    }
    

    public void registarProductos(Vector<Integer> codigos,Vector<Integer> cantidades){
        abrir();
        for (int i = 0; i < codigos.size(); i++) {
            String sql="INSERT INTO ProdOrde (cod_orden, cod_producto,cantidad , estatus ) VALUES(?,?,?,'A')";
            PreparedStatement stam = crearPreparedStatement(sql);
            try {
                System.out.println(codigos.elementAt(i)+" "+getCodigo());
                stam.setInt(1, getCodigo());
                stam.setInt(2,codigos.elementAt(i));
                stam.setInt(3, cantidades.elementAt(i));
                stam.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(MOrden.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        cerrar();
    }

    public Vector<String []> listarProductos(){
        Vector<String []> v = new Vector<String []>();
        abrir();
        String sql="SELECT Producto.descripcion, ProdOrde.cantidad  FROM  Producto,ProdOrde,Orden WHERE Orden.estatus='A' AND ProdOrde.estatus='A' AND Producto.estatus='A' AND Producto.codigo=ProdOrde.cod_producto AND Orden.codigo=ProdOrde.cod_orden AND Orden.codigo=?";
        PreparedStatement stam = crearPreparedStatement(sql);
        try {
            stam.setInt(1, getCodigo());
            ResultSet rs= stam.executeQuery();
            while (rs.next()){
                String [] s = new String [] {rs.getString(1), ""+rs.getFloat(2)};
                v.add(s);
            }
        } catch (SQLException ex) {
            Logger.getLogger(MProducto.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v;
  }

    public boolean  consultar(){
    boolean sw = false;
    abrir();
    String sql="SELECT * FROM Orden WHERE id=? AND estatus='A'";
    PreparedStatement stam = crearPreparedStatement(sql);
    try {
        stam.setInt(1, getCodigo());
        rs= stam.executeQuery();
        if (rs.next()){
            setNombre(rs.getString("nombre"));
            setFecha(rs.getDate("fecha"));
            setCedula(rs.getString("cedula"));
            setTotal(rs.getFloat("total"));
            sw = true;
         }
    } catch (SQLException ex) {
        Logger.getLogger(MProducto.class.getName()).log(Level.SEVERE, null, ex);
    }
    return sw;
  }

    

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula_cliente) {
        this.cedula = cedula_cliente;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getNombre() {
        return cliente;
    }

    public void setNombre(String nombre_cliente) {
        this.cliente = nombre_cliente;
    }


    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    



}
